/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package SysAguas.modelo;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 *
 * @author Heitor
 */
@Entity()
@Table(name="quarto")
public class Quarto implements Serializable {

    @Id
    @Column(name="numeroQuarto",nullable=false)
    private Integer numeroQuarto;

    @Column(name="capacidade",nullable=false)
    private Integer capacidade;
    
    @Column(name="nome",nullable=false)
    private String nome;

    @Column(name="descricao")
    private String descricao;

    @Column(name="valorDiaria",nullable=false)
    private double valorDiaria;

    @Enumerated(EnumType.STRING)
    private TipoQuarto tipoQuarto;

    @ManyToOne(cascade=CascadeType.PERSIST)
    @JoinColumn(name="id_Reserva")
    private Reserva reservaQ;

    public Quarto() {
    }

    public Reserva getReservaQ() {
        return reservaQ;
    }

    public void setReservaQ(Reserva reservaQ) {
        this.reservaQ = reservaQ;
    }

    public void removeReserva(Reserva r){
        if(reservaQ.equals(r)){
            reservaQ = null;

        }

    }


    public Integer getCapacidade() {
        return capacidade;
    }

    public void setCapacidade(Integer capacidade) {
        this.capacidade = capacidade;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Integer getNumeroQuarto() {
        return numeroQuarto;
    }

    public void setNumeroQuarto(Integer numeroQuarto) {
        this.numeroQuarto = numeroQuarto;
    }

    public TipoQuarto getTipoQuarto() {
        return tipoQuarto;
    }

    public void setTipoQuarto(TipoQuarto tipoQuarto) {
        this.tipoQuarto = tipoQuarto;
    }

    public double getValorDiaria() {
        return valorDiaria;
    }

    public void setValorDiaria(double valorDiaria) {
        this.valorDiaria = valorDiaria;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Quarto other = (Quarto) obj;
        if (this.numeroQuarto != other.numeroQuarto && (this.numeroQuarto == null || !this.numeroQuarto.equals(other.numeroQuarto))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 71 * hash + (this.numeroQuarto != null ? this.numeroQuarto.hashCode() : 0);
        return hash;
    }
    
}